package com.enums;

import java.util.Optional;

/**
 * @Author：YuanHaHa
 * @Date：2024/7/6 2:40
 */
public class UserEnumTest {
    /**
     * 1. 直接引用枚举值
     */
    public void process(){
        OperationStatusEnum status = OperationStatusEnum.SUCCESS;
        System.out.println("操作结果："+status.getDescription());
    }

    /**
     * 2. 判断操作状态
     * @param status
     */
    public void handle(OperationStatusEnum status){
        if (status == OperationStatusEnum.SUCCESS){
            System.out.println("操作成功，进行下一步。。。");
        } else if (status == OperationStatusEnum.FAILURE) {
            System.out.println("操作失败，需要处理错误。。。");
        }else {
            System.out.println("其他状态："+status.getDescription());
        }
    }

    /**
     * 3. 通过代码查找枚举值
     * 当你只知道操作的状态代码时，可以使用之前定义的fromCode方法来安全地获取对应的枚举值。
     * @param statusCode
     */
    public void log(int statusCode){
        try {
            OperationStatusEnum status = OperationStatusEnum.fromCode(statusCode);
            System.out.println("操作状态码："+statusCode + "对应的描述是："+status.getDescription());
        }catch (IllegalAccessError e){
            System.err.println(e.getMessage());
        }
    }

    /**
     * 4. 遍历枚举值
     * 如果你需要遍历所有的操作状态并进行处理，可以使用values()方法。
     */
    public void print(){
        for (OperationStatusEnum statusEnum : OperationStatusEnum.values()) {
            System.out.println("状态码："+statusEnum.getCode()+"，描述："+statusEnum.getDescription());
        }
    }

    public static void main(String[] args) {
//        new UserEnumTest().process();
//        OperationStatusEnum failure = OperationStatusEnum.FAILURE;
//        new UserEnumTest().handle(failure);
//        new UserEnumTest().log(2);
        new UserEnumTest().print();
    }

}
